package cn.iocoder.yudao.module.product.dal.mysql.comment;

import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.module.product.dal.dataobject.comment.CommentLikeDO;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface CommentLikeMapper extends BaseMapperX<CommentLikeDO> {

    default CommentLikeDO selectByUserIdAndCommentId(Long userId, Long commentId) {
        return selectOne(new LambdaQueryWrapperX<CommentLikeDO>()
                .eq(CommentLikeDO::getCommentId, commentId)
                .eq(CommentLikeDO::getUserId, userId));
    }

    default boolean getLikesStatus(Long commentId, Long userId) {
        // 使用 selectByUserIdAndCommentId 方法检查用户是否点赞
        return selectByUserIdAndCommentId(userId, commentId) != null;
    }

    default List<Long> getLikesByCommentId(Long commentId) {
        // 你可以实现这个方法从数据库获取点赞用户ID列表
        return selectList(new LambdaQueryWrapperX<CommentLikeDO>()
                .eq(CommentLikeDO::getCommentId, commentId))
                .stream()
                .map(CommentLikeDO::getUserId)
                .toList(); // 返回点赞该评论的所有用户ID
    }
}
